import java.util.Scanner;

abstract class A{
    public abstract void func();
}
abstract class B extends A{

}
 class C extends B{

     @Override
     public void func() {

     }
 }


//编程题
/*
A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息：
        A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
        现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。
        输入描述：
        输入为一行，一共4个整数，分别为A - B，B - C，A + B，B + C，用空格隔开。 范围均在-30到30之间(闭区间)。
        输出描述：
        输出为一行，如果存在满足的整数A，B，C则按顺序输出A，B，C，用空格隔开，行末无空格。 如果不存在这样的整数A，B，C，则输出No
        示例1
        输入：
        1 -2 3 4
        输出：
        2 1 3*/
public class select {
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别

        int a = in.nextInt();
        int b = in.nextInt();
        int c = in.nextInt();
        int d = in.nextInt();
        if ((c - a) != (b + d)) {
            System.out.print("No");
        } else {
            int e = ((c - a) / 2);
            int f = d - e;
            int g = a + e;
            System.out.print(g + " " + e + " " + f);
        }

    }


    /*给定一个十进制数M，以及需要转换的进制数N。将十进制数M转化为N进制数
        输入描述：
        输入为一行，M(32位整数)、N(2 ≤ N ≤ 16)，以空格隔开。
        输出描述：
        为每个测试实例输出转换后的数，每个输出占一行。如果N大于9，则对应的数字规则参考16进制（比如，10用A表示，等等）
        示例1
        输入：
        7 2
        输出：
        111*/

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        boolean flag = false;
        String table = "0123456789ABCDEF";
        StringBuilder ret = new StringBuilder();

        if (a < 0) {
            a = -a;
            flag = true;
        }
        if (a == 0) {
            ret.append('0');
        }
        while (a != 0) {
            ret.append(table.charAt(a % b));
            a = a / b;
        }
        if (flag) {
            ret.append("-");
        }
        ret.reverse();
        System.out.println(ret);

    }

}




